package edu.suda.LoopCodePlus.mapper;

import edu.suda.LoopCodePlus.entity.Problem;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

@Mapper
public interface ProblemMapper {
    /** 插入新题目 */
    void insert_problem(Problem problem);

    /** 根据id删除题目，并且该题目必须是本人所有 */
    void delete_problemById(@Param("problemId") Integer problemId,@Param("userId") Integer userId);

    /** 根据用户id删除题目，一般在删除用户时使用 */
    void delete_problemByUserId(Integer userId);

    /** 根据题目id查找题目 */
    Problem select_problemById(Integer problemId);

    /** 根据用户id查找题目 */
    List<Problem> select_problemByUserId(Integer userId);

    /** 根据题目集模糊查找题目 */
    List<Problem> select_problemByCollection(String collection);

    /** 根据题目名称模糊查找*/
    List<Problem> select_problemByName(String problemName);

    /** 根据用户id和题目id更新题目 */
    void update_problemById(@Param("problemId") Integer problemId,@Param("userId") Integer userId,@Param("problem") Problem problem);
    /** 查询所有题目 */
    List<Problem> select_AllProblem();
    /** 查询所有题目,根据标签,题目集和私有性筛查 */
    List<Problem> select_AllPublicProblem(@Param("tag") String tag, @Param("collection") String collection, @Param("status") Integer status);
    /** 根据题目标签查找题目 */
    List<Problem> select_problemByTag(String tag);
    /** 根据题目id更新userid和状态 */
    void update_problemUserIdAndStatus(@Param("problemId") Integer problemId ,@Param("userId") Integer userId);
}
